//package com.tensai.study.java.utils;
//
//import cn.hutool.core.util.IdUtil;
//import com.google.common.base.Joiner;
//import com.google.common.base.Splitter;
//import lombok.extern.slf4j.Slf4j;
//import org.bytedeco.javacpp.Loader;
//import org.junit.Test;
//
//import java.io.File;
//import java.text.MessageFormat;
//import java.util.Arrays;
//import java.util.List;
//
///**
// * @author Tensai
// */
//@Slf4j
//public final class ImageUtil {
//
//
//    /**
//     * 图片裁剪
//     *
//     * @param imagePath 图片地址
//     * @param outputDir 临时目录
//     * @param startX 裁剪起始x坐标
//     * @param startY 裁剪起始y坐标
//     * @param weight 裁剪宽度
//     * @param height 裁剪高度
//     * @throws Exception 异常
//     */
//    public String cutOutImage(
//            String imagePath,
//            String outputDir,
//            Integer startX,
//            Integer startY,
//            Integer weight,
//            Integer height)
//            throws Exception {
//        List<String> paths = Splitter.on(".").splitToList(imagePath);
//        String ext = paths.get(paths.size() - 1);
//        if (!Arrays.asList("png", "jpg").contains(ext)) {
//            throw new Exception("format error");
//        }
//        String resultPath =
//                Joiner.on(File.separator).join(Arrays.asList(outputDir, IdUtil.simpleUUID() + "." + ext));
//        String ffmpeg = Loader.load(org.bytedeco.ffmpeg.ffmpeg.class);
//        ProcessBuilder builder =
//                new ProcessBuilder(
//                        ffmpeg,
//                        "-i",
//                        imagePath,
//                        "-vf",
//                        MessageFormat.format(
//                                "crop={0}:{1}:{2}:{3}",
//                                String.valueOf(weight),
//                                String.valueOf(height),
//                                String.valueOf(startX),
//                                String.valueOf(startY)),
//                        "-y",
//                        resultPath);
//        builder.inheritIO().start().waitFor();
//        return resultPath;
//    }
//
//    /**
//     * 修改图片分辨率
//     *
//     * @param imagePath 原图片地址
//     * @param outputDir 输出目录
//     * @param width 宽度
//     * @param height 高度
//     * @return 图片地址
//     * @throws Exception 异常
//     */
//    public String modifyResolution(
//            String imagePath, String outputDir, Integer width, Integer height) throws Exception {
//        List<String> paths = Splitter.on(".").splitToList(imagePath);
//        String ext = paths.get(paths.size() - 1);
//        if (!Arrays.asList("jpg", "png").contains(ext)) {
//            throw new Exception("format error");
//        }
//        String resultPath =
//                Joiner.on(File.separator).join(Arrays.asList(outputDir, IdUtil.simpleUUID() + "." + ext));
//        String ffmpeg = Loader.load(org.bytedeco.ffmpeg.ffmpeg.class);
//        ProcessBuilder builder =
//                new ProcessBuilder(
//                        ffmpeg,
//                        "-i",
//                        imagePath,
//                        "-vf",
//                        MessageFormat.format("scale={0}:{1}", String.valueOf(width), String.valueOf(height)),
//                        resultPath);
//        builder.inheritIO().start().waitFor();
//        return resultPath;
//    }
//
//
//
//    @Test
//    public void test() throws Exception {
//
////        System.out.println(modifyResolution("e:\\tmp\\test.png", "e:\\tmp\\", 1653, 1165));
//
//        System.out.println(
//                cutOutImage(
//                        "e:\\tmp\\5be01a7ef98a43f2bba4e5a48be5ab78.png", "e:\\tmp\\", 850, 78, 744, 245));
//
////        System.out.println(
////                cutOutImage(
////                        "e:\\tmp\\test.png", "e:\\tmp\\", 1197, 127, 1049, 354));
//    }
//
//}
//
//
//
//
//
